Transactional logging involves maintaining a transactional log that durably records a time serial history of transactions in a system. The transactional log provides information for restoring a system to a particular state in time prior to a system failure. A transactional logging system must be able to reliably and accurately restore logging functionalities after such a system failure. Most conventional transactional logging systems implement a read cache in the user-address space to help reduce the latency of the round-trip to disk to read log records. Typically, read caches exploit the inherent sequential nature of logs and pre-fetch large amounts of data into their read caches. In many traditional systems multiple log clients (i.e., recipients of a logging service) exist and each log client consumes virtual memory and working set quota which equal the size of its read cache. In addition, because the read cache is stored in the application's address space it has to be replicated for every open instance of a log file or stored in user-mode shared memory.
While many current transactional logging systems are typically very robust and achieve a satisfactory performance level, the read caches utilized for multiple log clients can consume a significant amount of resources. Overall performance of the computing environment in which a multi-client transactional system is operating can be substantially impaired as a result of paying for the overhead and memory costs associated with the read caches.
This Background is provided to introduce a brief context for the Summary and Detailed Description that follows. This Background is not intended to be an aid in determining the scope of the claimed subject matter nor be viewed as limiting the claimed subject matter to only those implementations that may solve any or all of the disadvantages or problems presented above.